package cn.iocoder.yudao.module.ent.utils;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.StrUtil;

import java.util.*;
import java.util.concurrent.ConcurrentHashMap;

public class EsQueryValueConvertUtils {

    static ConcurrentHashMap<String, List<String>> map = new ConcurrentHashMap<>();

    static {
        map.put("有限责任公司", ListUtil.toList("有限责任公司(自然人投资或控股)", "有限责任公司(自然人独资)", "有限责任公司", "其他有限责任公司", "有限责任公司(非自然人投资或控股的法人独资)", "有限责任公司(自然人投资或控股的法人独资)", "有限责任公司(法人独资)", "一人有限责任公司", "有限责任公司(外国法人独资)", "有限责任公司(外国自然人独资)", "有限责任公司(中外合资)", "有限责任公司(国有控股)", "有限责任公司(国有独资)", "有限责任公司(台港澳法人独资)", "有限责任公司(港澳台法人独资)", "有限责任公司(港澳台投资、非独资)", "有限责任公司(台港澳自然人独资)", "有限责任公司(台港澳与境内合资)", "有限责任公司(台港澳与境内合作)", "有限责任公司(台港澳合资)", "有限责任公司(外商投资企业法人独资)", "有限责任公司(外商投资、非独资)", "有限责任公司(外商投资企业与内资合资)", "有限责任公司(外商投资企业投资)", "有限责任公司(外商合资)", "有限责任公司(外商投资)", "有限责任公司(其他)", "有限责任公司分公司(自然人投资或控股)", "有限责任公司分公司(自然人独资)", "有限责任公司分公司", "其他有限责任公司分公司", "有限责任公司分公司(非自然人投资或控股的法人独资)", "有限责任公司分公司(自然人投资或控股的法人独资)", "有限责任公司分公司(国有独资)", "有限责任公司分公司(国有控股)", "有限责任公司分公司(外商投资企业法人独资)", "有限责任公司分公司(法人独资)", "有限责任公司分公司(外商投资企业与内资合资)", "有限责任公司分公司(外商投资企业合资)", "有限责任公司(台港澳与境内合资)分公司", "有限责任公司(中外合资)分公司", "有限责任公司分公司(外商投资企业投资)", "有限责任公司(外国法人独资)分公司", "有限责任公司(外国自然人独资)分公司", "有限责任公司(港澳台自然人独资)分公司", "一人有限责任公司分公司", "有限责任公司(台港澳与外国投资者合资)", "有限责任公司(台港澳与外国投资者合资)分公司", "一人有限责任公司(自然人投资或控股的法人独资)", "其他(外商投资有限责任公司)", "有限责任公司(外商投资企业合资)", "有限责任公司(台港澳非法人经济组织独资)", "有限责任公司(外国非法人经济组织独资)"));
        map.put("股份有限公司", ListUtil.toList("股份有限公司分公司(非上市)", "股份有限公司分公司(国有控股)", "股份有限公司(非上市、自然人投资或控股)", "股份有限公司分公司(非上市、自然人投资或控股)", "股份有限公司(台港澳与境内合资、未上市)", "股份有限公司(台港澳与境内合资)", "股份有限公司(非上市)", "股份有限公司(非上市、国有控股)", "股份有限公司(非上市、外商投资企业投资)", "股份有限公司分公司", "股份有限公司分公司(非上市、国有控股)", "股份有限公司(上市)", "股份有限公司(上市、国有控股)", "股份有限公司分公司(上市、国有控股)", "股份有限公司(上市、外商投资企业投资)", "股份有限公司分公司(上市、外商投资企业投资)", "股份有限公司分公司(非上市、外商投资企业投资)", "股份有限公司(中外合资、未上市)", "股份有限公司(外商投资、未上市)", "股份有限公司(台港澳投资、未上市)", "股份有限公司(台港澳合资、未上市)", "股份有限公司(中外合资、未上市)分公司", "股份有限公司(台港澳与境内合资、上市)", "股份有限公司(台港澳合资、上市)", "股份有限公司(台港澳合资、上市)分公司", "股份有限公司(台港澳与境内合资、上市)分公司", "股份有限公司(台港澳与外国投资者合资)", "股份有限公司(台港澳与外国投资者合资、未上市)", "股份有限公司(台港澳与外国投资者合资、上市)", "股份有限公司(外商合资、未上市)", "股份有限公司（外商投资、未上市）", "股份有限公司（外商投资、上市）", "股份有限公司(上市公司)", "股份有限公司分公司(上市)", "其他股份有限公司(上市)", "其他股份有限公司分公司(上市)", "股份有限公司(其他)", "股份有限公司(台港澳投资、未上市)", "其他(外商投资股份有限公司)", "其他股份有限公司(非上市)", "股份有限公司(外商投资企业合资)", "股份有限公司(中外合资、上市)", "股份有限公司(中外合资、上市)分公司", "股份有限公司(台港澳与外国投资者合资、未上市)分公司", "股份有限公司(上市、自然人投资或控股)", "股份有限公司分公司(上市、自然人投资或控股)", "股份有限公司(上市、外商投资企业投资)"));
        map.put("个体工商户", ListUtil.toList("个体工商户"));
        map.put("普通合伙", ListUtil.toList("普通合伙企业", "普通合伙企业分支机构", "特殊普通合伙企业", "特殊普通合伙企业分支机构", "合伙企业", "合伙企业分支机构", "有限合伙企业", "有限合伙企业分支机构", "外商投资普通合伙企业", "港、澳、台投资合伙企业", "外商投资合伙企业", "外商投资合伙企业分支机构"));
        map.put("联营", ListUtil.toList("联营", "联营(法人)", "联营(非法人)"));
        map.put("国企", ListUtil.toList("全民所有制", "全民所有制分支机构(非法人)", "国有经营单位(非法人)", "国有社团法人营业", "国有事业单位营业", "有限责任公司(国有控股)", "有限责任公司(国有独资)"));
        map.put("集体所有制", ListUtil.toList("集体所有制", "集体所有制(股份合作)", "集体所有制(股份合作)分支机构", "集体所有制(股份合作)－全资设立", "集体所有制(股份合作)－全资设立(分支机构)", "集体分支机构(非法人)", "集体经营单位(非法人)", "集体事业单位营业", "集体社团法人营业"));
        map.put("外资", ListUtil.toList("外商投资企业", "外商投资企业分公司", "外商投资企业分支机构", "外商投资企业其他分支机构", "外商投资企业办事处", "其他(外商投资合伙企业)", "非公司外商投资企业分支机构", "非公司外商投资企业(中外合作)", "非公司外商投资企业(外商合资)", "股份有限公司(外商投资企业投资)", "股份有限公司(外商投资企业合资)", "股份有限公司(中外合资、未上市)", "股份有限公司（外商投资、未上市）", "股份有限公司(台港澳投资、未上市)", "有限责任公司(外商投资企业法人独资)", "有限责任公司(外国法人独资)", "有限责任公司(外国自然人独资)", "有限责任公司(外商投资企业投资)", "有限责任公司(外国非法人经济组织独资)", "有限责任公司(台港澳与境内合资)", "有限责任公司(台港澳合资)", "有限责任公司(台港澳投资、非独资)", "有限责任公司(台港澳法人独资)", "有限责任公司(台港澳自然人独资)", "有限责任公司(台港澳与境内合作)", "有限责任公司(台港澳与境内合资)", "有限责任公司(台港澳与外国投资者合资)", "股份有限公司(外商投资、未上市)", "股份有限公司(外商投资企业投资)", "股份有限公司(台港澳投资、未上市)", "股份有限公司(台港澳合资、未上市)", "股份有限公司(台港澳合资、未上市)分公司", "股份有限公司(台港澳与外国投资者合资)", "股份有限公司(台港澳与外国投资者合资、未上市)"));
        map.put("事业单位", ListUtil.toList("事业单位", "事业单位分支机构(非法人)", "全民所有制分支机构(非法人)"));
        map.put("港澳台", ListUtil.toList("有限责任公司(台港澳法人独资)", "有限责任公司(港澳台法人独资)", "有限责任公司(港澳台投资、非独资)", "有限责任公司(台港澳自然人独资)", "有限责任公司(台港澳与境内合资)", "有限责任公司(台港澳与境内合作)", "有限责任公司(台港澳合资)", "有限责任公司(台港澳与境内合资)分公司", "有限责任公司(港澳台自然人独资)分公司", "有限责任公司(台港澳与外国投资者合资)", "有限责任公司(台港澳与外国投资者合资)分公司", "有限责任公司(台港澳非法人经济组织独资)", "股份有限公司(台港澳与境内合资、未上市)", "股份有限公司(台港澳与境内合资)", "股份有限公司(台港澳投资、未上市)", "股份有限公司(台港澳合资、未上市)", "股份有限公司(台港澳与境内合资、上市)", "股份有限公司(台港澳合资、上市)", "股份有限公司(台港澳合资、上市)分公司", "股份有限公司(台港澳与境内合资、上市)分公司", "股份有限公司(台港澳与外国投资者合资)", "股份有限公司(台港澳与外国投资者合资、未上市)", "股份有限公司(台港澳与外国投资者合资、上市)", "股份有限公司(台港澳投资、未上市)", "股份有限公司(台港澳与外国投资者合资、未上市)分公司", "港、澳、台投资合伙企业", "股份有限公司(台港澳投资、未上市)", "有限责任公司(台港澳与境内合资)", "有限责任公司(台港澳合资)", "有限责任公司(台港澳投资、非独资)", "有限责任公司(台港澳法人独资)", "有限责任公司(台港澳自然人独资)", "有限责任公司(台港澳与境内合作)", "有限责任公司(台港澳与境内合资)", "有限责任公司(台港澳与外国投资者合资)", "股份有限公司(台港澳投资、未上市)", "股份有限公司(台港澳合资、未上市)", "股份有限公司(台港澳合资、未上市)分公司", "股份有限公司(台港澳与外国投资者合资)", "股份有限公司(台港澳与外国投资者合资、未上市)"));

        map.put("天使轮", ListUtil.toList(
                "天使轮",
                "种子轮"));

        map.put("A轮", ListUtil.toList(
                "A轮",
                "Pre-A轮",
                "A+轮",
                "A++轮",
                "Pre-A+轮"));
        map.put("B轮", ListUtil.toList(
                "B轮",
                "B+轮",
                "Pre-B轮"));
        map.put("C轮", ListUtil.toList(
                "C轮",
                "C+轮"));
        map.put("D轮及以上", ListUtil.toList(
                "D轮",
                "D+轮",
                "E轮",
                "E+轮",
                "F轮",
                "E轮及以后"));
        map.put("已上市", ListUtil.toList(
                "IPO",
                "IPO后",
                "上市",
                "上市后",
                "新三板",
                "新三板定增",
                "主板定向增发"));
        map.put("其他", ListUtil.toList(
                "战略投资",
                "被收购",
                "股权转让",
                "退市",
                "并购",
                "战略合并",
                "新四板",
                "扶持基金",
                "后期阶段",
                "私有化",
                "众筹",
                "定向增发",
                "基石轮",
                "股权融资",
                "ICO",
                "债券融资"));
    }


    public static List<String> convertValues(String value) {
        if (map.containsKey(value)) {
            return map.get(value);
        }
        return ListUtil.toList(value);
    }


}
